package com.imachen.basic.utils;

import com.imachen.basic.jwt.JwtUtils;
import com.imachen.basic.jwt.LoginData;
import com.imachen.basic.jwt.Payload;
import com.imachen.basic.jwt.RsaUtils;
import com.imachen.user.domain.Logininfo;

import javax.servlet.http.HttpServletRequest;
import java.security.PublicKey;

/**
 * 获取当前登录人的信息：
 * 用来做宠物上架审核【审核人=当前登录人】，店铺入驻审核【以前审核人是写死的】，发布寻主消息审核
 */
public class LoginContext {

    public static Logininfo getLogininfo(HttpServletRequest request){
        try {
            //从请求头中获取名称为token的值
            String token = request.getHeader("token"); //jwttoken：str1.str2.str3
            if(token != null){
                //获取公钥
                PublicKey publicKey = RsaUtils.getPublicKey(JwtUtils.class.getClassLoader().getResource("auth_rsa.pub").getFile());
                //使用公钥解密 - 获取登录数据：登录信息 + 菜单信息 + 权限信息
                Payload<LoginData> infoFromToken = JwtUtils.getInfoFromToken(token, publicKey, LoginData.class);
                //返回登陆信息
                return infoFromToken.getLoginData().getLogininfo();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
